//
//  Date+Category.swift
//  zob
//
//  Created by A-Jay on 13/4/2017.
//  Copyright © 2017年 A-Jay. All rights reserved.
//

import Foundation

extension Date {
    
    /**
     
     获取这个月有多少天
     
     */
    
//    func getMonthHowManyDay() ->Int {
//        
//        //我们大致可以理解为：某个时间点所在的“小单元”，在“大单元”中的数量
//        
////        return NSCalendar.currentCalendar.rangeOfUnit(.day, inUnit:.Month, forDate:self).length
//        var temp = NSCalendar.current.range(of: .day, in: .month, for: self as Date)
//        
//        return temp.
//        
//    }
    
    
    
    // 获取日期是星期几
    
//    func getDateWeekDay() ->Int {
//        
//        let dateFmt         =NSDateFormatter()
//        
//        dateFmt.dateFormat  ="yyyy-MM-dd HH:mm:ss"
//        
//        let interval        =Int(self.timeIntervalSince1970)
//        
//        let days            =Int(interval/86400)
//        
//        let weekday         = ((days +4)%7+7)%7
//        
//        return weekday
//        
//    }
    
    
    
    /**
     
     *  获取这个月第一天是星期几
     
     */
    
//    func getMontFirstWeekDay() ->Int {
//        
//        //1.Sun. 2.Mon. 3.Thes. 4.Wed. 5.Thur. 6.Fri. 7.Sat.
//        
//        let calendar =NSCalendar.currentCalendar()
//        
//        //这里注意 Swift要用[,]这样方式写
//        
//        let com = calendar.components([.Year,.Month,.Day], fromDate:self)
//        
//        //设置成第一天
//        
//        com.day =1
//        
//        let date = calendar.dateFromComponents(com)
//        
//        //我们大致可以理解为：某个时间点所在的“小单元”，在“大单元”中的位置  ordinalityOfUnit
//        
//        let firstWeekDay = calendar.ordinalityOfUnit(.Weekday, inUnit: .WeekOfMonth, forDate: date!)
//        
//        return firstWeekDay -1
//        
//    }
    
    
    
    /**
     
     *  获取当前Day
     
     */
    
    static func getDay(date: Date) ->Int {
        
        let calendar = Calendar.current
        
        //这里注意 swift要用[,]这样方式写
        
        let com = calendar.dateComponents([.year,.month,.day], from: date)
        
        return com.day!
        
    }
    
    
    
    /**
     
     *  获取当前Month
     
     */
    
    static func getMonth(date: Date) ->Int {
        
        let calendar = Calendar.current
      
        //这里注意 swift要用[,]这样方式写
        
        let com = calendar.dateComponents([.year,.month,.day], from: date)
        
        return com.month!
        
    }
    
    
    
    /**
     
     *  获取当前Year
     
     */
    
    static func getYear(date: Date) ->Int {
        
        let calendar = Calendar.current
        
        //这里注意 swift要用[,]这样方式写
        
        let com = calendar.dateComponents([.year,.month,.day], from: date)
        
        return com.year!
        
    }
    
    /**
     
     获取指定时间当月的时间
     
     */
    
    static func getCurrentDate(day: Int) ->Date {
        
        let calendar = Calendar.current
        
        var com = calendar.dateComponents([.year,.month,.day], from: Date())
        
        com.day! = day
        
//        if com.month! == Date.getMonth() {
//            
//            com.day = Date.getDay(date: Date())
//        }
        
        return calendar.date(from: com)!
        
    }
    
    
    /**
     
     获取指定时间下一个月的时间
     
     */
    
    static func getNextDate(day: Int) ->Date {
        
        let calendar = Calendar.current
        
        var com = calendar.dateComponents([.year,.month,.day], from: Date())
        
        com.month! += 1
        
        com.day! = day
        
//        if com.month! == Date.getMonth() {
//            
//            com.day = Date.getDay(date: Date())
//        }
        
        return calendar.date(from: com)!
        
    }
    
    
    
    /**
     
     获取指定时间上一个月的时间
     
     */
    
    static func getLastDate(day: Int) ->Date {
        
        let calendar = Calendar.current
        
        var com = calendar.dateComponents([.year,.month,.day], from: Date())
        
        com.month! -= 1
        
        com.day! = day
        
//        if com.month! == Date.getMonth() {
//            
//            com.day = Date.getDay(date: Date())
//        }
        
        return calendar.date(from: com)!
        
    }
    
    
    
    /**
     
//     获取指定时间下一个月的长度
//     
//     */
//    
//    func getNextDateLenght() ->Int {
//        
//        let date =self.getNextDate()
//        
//        return date.getMonthHowManyDay()
//        
//    }
//    
//    
//    
//    /**
//     
//     获取指定时间上一个月的长度
//     
//     */
//    
//    func getLastDateLenght() ->Int {
//        
//        let date =self.getLastDate()
//        
//        return date.getMonthHowManyDay()
//        
//    }
    
    
    
    //当前时间label内容
    
    static func getTimeYYYY_MM(date: Date) ->String {
        
        let day        = Date.getDay(date: date)
        
        let month      = Date.getMonth(date: date)
        
        let year       = Date.getYear(date: date)
        
        let dateString = String("\(year)-\(month)-\(day)")
        
        return dateString!
        
    }
    
    
    
    /**
     
     是否是今天
     
     */
    
//    func isToday()->Bool {
//        
//        let calendar =NSCalendar.currentCalendar()
//        
//        /// 获取self的时间
//        
//        let comSelf = calendar.components([.Year,.Month,.Day], fromDate:self)
//        
//        /// 获取当前的时间
//        
//        let comNow = calendar.components([.Year,.Month,.Day], fromDate:NSDate())
//        
//        return comSelf.year==comNow.year && comSelf.month==comNow.month && comSelf.day==comNow.day
//        
//    }
    
    
    
    /**
     
     是否是这个月
     
     */
    
//    func isEqualMonth(date :NSDate)->Bool {
//        
//        let calendar =NSCalendar.currentCalendar()
//        
//        /// 获取self的时间
//        
//        let comSelf = calendar.components([.Year,.Month,.Day], fromDate:self)
//        
//        /// 获取当前的时间
//        
//        let comNow = calendar.components([.Year,.Month,.Day], fromDate: date)
//        
//        return comSelf.year==comNow.year && comSelf.month==comNow.month
//        
//    }
    
    
    
    /**
     
     是否是这个月
     
     */
    
//    func isThisMonth()->Bool {
//        
//        let calendar =NSCalendar.currentCalendar()
//        
//        /// 获取self的时间
//        
//        let comSelf = calendar.components([.Year,.Month,.Day], fromDate:self)
//        
//        /// 获取当前的时间
//        
//        let comNow = calendar.components([.Year,.Month,.Day], fromDate:NSDate())
//        
//        return comSelf.year==comNow.year && comSelf.month==comNow.month
//        
//    }
    
    
    
    /**
     
     分别获取准确的年月日
     
     */
    
//    func getDateY_M_D(day :Int)->(year:Int,month:Int,day:Int) {
//        
//        let calendar =NSCalendar.currentCalendar()
//        
//        let comSelf = calendar.components([.Year,.Month,.Day], fromDate:self)
//        
//        comSelf.day = day
//        
//        return (comSelf.year,comSelf.month,comSelf.day)
//        
//    }
    
    
    
    /**
     
     获取指定date
     
     */
    
//    func getDate(day :Int)-> NSDate {
//        
//        let calendar =NSCalendar.currentCalendar()
//        
//        let comSelf = calendar.components([.Year,.Month,.Day], fromDate:self)
//        
//        comSelf.day = day
//        
//        return calendar.dateFromComponents(comSelf)!
//        
//    }
//
//    
//    
//    /**
//     
//     把当前时间转化为字符串
//     
//     */
//    
//    func currentDateIntoString()->String {
//        
//        let dateFormatter        =NSDateFormatter()
//        
//        dateFormatter.dateFormat ="yyyy-MM-dd HH:mm:ss"
//        
//        let timeString           = dateFormatter.stringFromDate(self)
//        
//        return timeString
//        
//    }
    
}
